<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>-声明变量不加var的危害</title>
</head>

<body>
  <script src="a.js"></script>
  <script>

    var n = 1;
    function fn1() {
      n = 123;  // 函数里面变量没有使用 var,let, const声明,则默认声明全局的变量.
    }
    fn1();
    console.log(n);
    /*
   1、如果之前全局有一个全局变量就会对之前的全局变量造成污染。
   
   2、就算没有相同的全局变量，全局变量的过度使用也会造成性能的损耗。
   
   
------全局变量和局部变量

全局变量 只要定义了在任何地方都可以使用
局部变量 只能在当前的作用域内使用
                  变量的生命周期             是否占内存
全局变量    只要程序开启，永远存在               占
局部变量    函数调用的时候诞生，函数调用完消亡    不占内存

这就是不加var的危害，作者也知道，所以在后面做的改正。就是let

这也是闭包为什么经常被面试官问到。因为闭包存在问题。就是局部变量无法得到释放。
     */
    console.log(username) //王宣麟
    console.log(obj) // "obj is not defined"

  </script>
  <!-- <script src="a.js"></script> -->
</body>

</html>